<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>

  <script>
    /*对象的状态不受外界影响。
     *Promise对象代表一个异步操作，有三种状态：pending（进行中）、fulfilled（已成功）和rejected（已失败）。
     *只有异步操作的结果，可以决定当前是哪一种状态，任何其他操作都无法改变这个状态。
     *
     * 一旦状态改变，就不会再变，任何时候都可以得到这个结果。resolved(已定型)
     * pending => fulfilled => resolved      pending => rejected
     * 
     * 缺点
     * 1.无法取消Promise，一旦新建它就会立即执行，无法中途取消。
     * 2.如果不设置回调函数，Promise内部抛出的错误，不会反应到外部。
     * 3.当处于pending状态时，无法得知目前进展到哪一个阶段（刚刚开始还是即将完成）。
     */

     let promise = new Promise(function (resolve, reject) {  // 立即执行
       console.log('Promise');
       resolve();
       console.log('inner');
     })

     promise.then(() => {  // 在当前脚本所有同步任务执行完才会执行
       console.log('resolved')
     }).catch(() => {
       console.log('rejected');
     })

     console.log('outer')
     // Promise
     // inner
     // outer
     // resolved
  </script>

</head>
<body>
  
</body>
</html>